import axios from "axios";
import  NProgress  from "nprogress";
import "nprogress/nprogress.css"
import {isUserTempId,readToken} from "@/utils/auth"
import router from "@/router"
import { Message } from "element-ui";

//创建实例对象
let instance = axios.create({
    baseURL:"/sph",  //默认域名
    timeout:5000   //超时时间
})


//请求拦截
instance.interceptors.request.use((config)=>{

    //开启 进度条
    NProgress.start();

    // 向请求头添加 token 用户登录后的真正的唯一标识
    if(readToken()){
        config.headers.token = readToken();
    }
   

    //向请求头添加 usertempId 用户临时唯一标识
    config.headers.userTempId = isUserTempId();
    //返回 请求的所有的配置信息
    return config;
})

//响应拦截
instance.interceptors.response.use(
    (response)=>{
        
        //关闭进度条
        NProgress.done();

        switch(response.data.code){
            case 200:   //正常
                //返回响应的结果
                return response.data.data;
            case 201:   //参数错误
                return "响应拦截器中的提示:参数错误";   
            case 208:  //未登录
                //跳转值登录页面
                router.push("/login");
                // 提示
                // Message.warning("请先登录!");
                return response.data.code;
            
            
            default:  //其他结果
                return response.data;
                
        }

        
    },
    (error)=>{

        
        //关闭进度条
        NProgress.done();

        //统一输出 错误信息
        console.log(error.message);
        // 1. 返回一个失败状态的Promise
        // return Promise.reject();

        // 2. 返回 一个 penging 状态的Promise 。中断Promise链
        return new Promise(()=>{});
    }
)

//暴露 instance
export default instance;